E.4. PropertiesLauncher Features
附录 E.4. PropertiesLauncher特性
PropertiesLauncher有一些特殊的性质,它们可以通过外部属性来启用(系统属性、环境变量、manifest实体或application.properties)。下面的表格描述了这些属性:
| 键 | 作用 |
|---|---|
loader.path | 逗号分隔的classpath,比如lib,${HOME}/app/lib。前面的条目优先,就像javac命令行中的常规-classpath一样。 |
loader.home | 用于解析loader.path中的相对路径。例如,给定loader.path=lib,那么${loader.home}/lib是一个类路径位置(以及该目录中的所有 jar文件)。这个属性也用于定位loader.properties文件,就像下面的例子/opt/app,它的默认值是${user.dir}。 |
loader.args | main方法的默认参数(以空格分隔) |
loader.main | 要启动的main类名称,比如com.app.Application |
loader.config.name | 属性文件名,比如loader(默认为application) |
loader.config.location | 属性文件路径,比如classpath:loader.properties(默认为application.properties) |
loader.system | 布尔标识,表明所有的属性都应该添加到系统属性中(默认为false) |
当指定为环境变量或清单条目时,应使用以下名称:
| 键 | 清单条目 | 环境变量 |
|---|---|---|
loader.path | Loader-Path | LOADER_PATH |
loader.home | Loader-Home | LOADER_HOME |
loader.args | Loader-Args | LOADER_ARGS |
loader.main | Start-Class | LOADER_MAIN |
loader.config.location | Loader-Config-Location | LOADER_CONFIG_LOCATION |
loader.system | Loader-System | LOADER_SYSTEM |
注 构建插件在胖子jar构建时,会自动将Main-Class属性移动到Start-Class。如果使用这个,请指定要启动的类的名称,使用Main-Class属性而省略Start-Class。
以下规则适用于使用PropertiesLauncher工作:
loader.properties在loader.home中搜索,然后在类路径的根目录中搜索,然后在classpath:/BOOT-INF/classes中搜索。首先使用的是存在该名称的文件的第一个位置。loader.home是一个额外的属性文件的目录位置(覆盖了默认值),只有在没有指定loader.config.location时才会使用。loader.path可以包含目录(递归地扫描jar和zip文件)、归档路径、归档中的目录(例如,dependencies.jar!/lib)或通配符模式(用于默认的JVM行为)。存档路径可以是相对于loader.home或文件系统中任何带有jar:file:前缀的地方。loader.path(如果为空) 默认为BOOT-INF/lib(意思是本地目录,如果从归档中运行,则为嵌套目录)。因此,当没有提供额外的配置时,PropertiesLauncher的行为与JarLauncher相同。loader.path不能用来配置loader.properties的位置(当启动PropertiesLauncher时,用于搜索后者的类路径是JVM的类路径)。- 在使用前,从System和环境变量加上properties文件本身的所有值上进行占位符替换。
- 对属性的搜索顺序(在不止一个地方查找是有意义的)是环境变量、系统属性、
loader.properties和档案清单。